﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using IBatisNet.DataMapper;
using TumbaloSoft.Helpers.QueryObjects;
using TumbaloSoft.Models;

namespace TumbaloSoft.Helpers
{
    public class HelperCuota
    {
        public static Cuota selectById(int idCuota)
        {
            Cuota cuota = (Cuota)Mapper.Instance().QueryForObject("CuotaSelectById",idCuota);
            cuota.prDepartamento = HelperDepartamento.selectById(cuota.prDepartamento.prIdDepartamento);
            cuota.prSubtotales = new List<DetalleCuota>(Mapper.Instance().QueryForList<DetalleCuota>("DetalleCuotaSelect",cuota.prIdCuota));
            return cuota;
        }

        public static void insert(Cuota cuota)
        {
            Mapper.Instance().Insert("CuotaInsert",cuota);
        }

        public static List<Cuota> selectCuotasPendientes(int idDepartamento)
        {
            List<Cuota> cuotas = new List<Cuota>(Mapper.Instance().QueryForList<Cuota>("CuotaSelectPendientes", idDepartamento));
            foreach (Cuota cuota in cuotas)
            {
                cuota.prDepartamento = HelperDepartamento.selectById(cuota.prDepartamento.prIdDepartamento);
            }
            return cuotas;
        }

        public static List<Cuota> selectEstadoCuenta(int idDepartamento)
        {
            List<Cuota> cuotas = new List<Cuota>(Mapper.Instance().QueryForList<Cuota>("CuotaSelectAll", idDepartamento));
            foreach (Cuota cuota in cuotas)
            {
                cuota.prDepartamento = HelperDepartamento.selectById(cuota.prDepartamento.prIdDepartamento);
            }
            return cuotas;
        }
        public static List<Cuota> selectMorosos(int idEdificio)
        {
            List<Cuota> cuotas = new List<Cuota>(Mapper.Instance().QueryForList<Cuota>("CuotaSelectMorosos", idEdificio));
            foreach (Cuota cuota in cuotas)
            {
                cuota.prDepartamento = HelperDepartamento.selectById(cuota.prDepartamento.prIdDepartamento);
            }
            return cuotas;
        }

        public static List<Cuota> selectAllMes(int idEdificio)
        {
            List<Cuota> cuotas = new List<Cuota>(Mapper.Instance().QueryForList<Cuota>("CuotaSelectAllMes", idEdificio));
            foreach (Cuota cuota in cuotas)
            {
                cuota.prDepartamento = HelperDepartamento.selectById(cuota.prDepartamento.prIdDepartamento);
            }
            return cuotas;
        }

        public static bool hayCuotaMes(Cuota cuota)
        {
            if (Mapper.Instance().QueryForObject<Int32>("CuotaSelectHayCuotaMes", cuota)==0) return false;
            return true;
        }

        public static IList ingresos (BusquedaBalanceEconomicoEdificio busqueda)
        {
            return Mapper.Instance().QueryForList("IngresosBalance", busqueda);
        }

        public static Cuota selectCuotasMes(BusquedaCuota busqueda)
        {
            List<Cuota> cuotas = new List<Cuota>(Mapper.Instance().QueryForList<Cuota>("CuotaSelectByMes", busqueda));
            foreach (Cuota cuota in cuotas)
            {
                cuota.prDepartamento = HelperDepartamento.selectById(cuota.prDepartamento.prIdDepartamento);
            }
            if (cuotas.Count > 0) return cuotas[0]; else return null;
        }

        public static void AsignarAgua(Cuota c)
        {
            Mapper.Instance().Update("CuotaAsignarAgua", c);
        }

     
        public static void InsertarDetalle(Cuota c)
        {
            Mapper.Instance().Insert("DetalleCuotaInsert", c);
        }
    }
}